package com.kscrm.web.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.kscrm.common.annotation.Excel;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 客户对象 client
 *
 * @author Dhq
 * @date 2025-01-20
 */
@Data
@Accessors(chain = true)
public class Client {

    /**
     * ID
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 渠道ID
     */
    private Long channelId;

    /**
     * 客户编号
     */
    @NotBlank(message = "客户编号不能为空")
    private String serialNumber;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    private String name;


    /**
     * 客户类型
     */
    @NotBlank(message = "客户类型不能为空")
    private String type;

    /**
     * 区域
     */
    private String area;

    /**
     * 省份编号
     */
    private String provinceCode;

    /**
     * 城市编号
     */
    private String cityCode;

    /**
     * 详细地址
     */
    private String address;

    /**
     * 区县编号
     */
    private String areaCode;


    /**
     * 客户标签
     */
    private String tags;

    /**
     * 客户状态
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date createAt;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date updateAt;

    private String remark;

    private String createBy;

    /** 历史渠道（在哪个渠道留存过） */
    private String historyChannelIds;

    /** 有效期开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startAt;

    /** 有效期结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endAt;

    // 客户标签列表
    private List<Tag> tagList;

    // 最新的跟进记录
    private String latestRecord;

    // 查询公海客户
    private String publicClient;

    // 客户联系人列表
    @NotNull(message = "客户联系人列表不能为空")
    private List<ClientContact> contactList;


    // 专家用户ID
    private Long expertUserId;

}
